package cn.iocoder.yudao.module.digital.controller.admin.cardkeythirdpartyapirecord.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import javax.validation.constraints.*;

@Schema(description = "管理后台 - 卡密第三方API请求记录新增/修改 Request VO")
@Data
public class CardkeyThirdPartyApiRecordSaveReqVO {
    @Schema(description = "主键")
    private Long id;

    @Schema(description = "是否撤销")
    private Boolean reverse;

    @Schema(description = "卡密商品编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "卡密商品编号不能为空")
    private String productNo;

    @Schema(description = "请求类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotEmpty(message = "请求类型不能为空")
    private String requestType;

    @Schema(description = "请求id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7760")
    @NotEmpty(message = "请求id不能为空")
    private String requestId;

    @Schema(description = "生成eGfit的请求id", requiredMode = Schema.RequiredMode.REQUIRED, example = "7760")
    @NotEmpty(message = "生成eGfit的请求id不能为空")
    private String generateEGiftRequestId;

    @Schema(description = "订单流水号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "订单流水号不能为空")
    private String orderNo;

    @Schema(description = "用户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "5134")
    @NotNull(message = "用户id不能为空")
    private Long userId;

    @Schema(description = "Http状态码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "Http状态码不能为空")
    private Integer httpStatusCode;

    @Schema(description = "错误码")
    private String errorCode;

    @Schema(description = "错误描述")
    private String errorDesc;

    @Schema(description = "URL")
    private String requestUrl;

    @Schema(description = "请求Header")
    private String requestHeaders;

    @Schema(description = "请求body")
    private String requestBody;

    @Schema(description = "响应body")
    private String responseBody;

    @Schema(description = "面额（单位：分）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "面额（单位：分）不能为空")
    private Integer denomination;

    @Schema(description = "货币代码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "货币代码不能为空")
    private String currencyCode;

}